home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / dev / src / tla_source.lha / Tunnel.s < prev    next >
Text File  |  1998-01-16  |  3KB  |  161 lines

  1. ; +-----------------------+
  2. ; | Generic Tunnel Effect |
  3. ; +-----------------------+-------------------------------------------+
  4.  
  5.  
  6.  
  7. TNL_Y        = 128        ; # of y lines to do
  8. TNL_TIME    = 15*50        ; Time in VBL's
  9.  
  10. TNL_INT    ;-- Init CoperList --
  11.     _LoadPlanes    #TNL_pln, TNL_CL, 8, 40*128    ; Init Plane Ptrs
  12.     _LoadPalette24    TNL_white, TNL_CLp, 8        ; Init Palette
  13.     _LoadCList    TNL_CL                ; Show CopperList
  14.     _WaitVBL
  15.  
  16.     Move.w    #$8380,$DFF000+DMACON    ; DMAEN | BPLEN | COPEN
  17.  
  18.     ;-- UNPACK SHADED BG --
  19.     _STC_Decrunch    TNL_bkg, TNL_pln+(40*128*4)
  20.     ;-- RESET TIMER --
  21.     Clr.w    INT_Timer1
  22.  
  23.     ; +------+
  24.     ; | LOOP |
  25.     ; +------+--------------------+
  26.  
  27.  
  28.  
  29. .tnl_lp
  30.  
  31.     ;-- TIMING --
  32.     _WaitVBL
  33.  
  34.     ;-- FADE IN/OUT --
  35.     Move.w    INT_Timer1,d0
  36.     Cmp.w    #32,d0
  37.     Bgt.s    .noin
  38.  
  39.     Asl.w    #3,d0
  40.     Move.w    d0,TNL_fvl
  41.     _FadePalette24    TNL_white, TNL_pal, PAL_temp, 256, TNL_fvl
  42.     _LoadPalette24    PAL_temp, TNL_CLp, 8
  43.     Bra.s    .nofd
  44.  
  45. .noin    Neg.w    d0
  46.     Add.w    #TNL_TIME,d0
  47.     Cmp.w    #64,d0
  48.     Bgt.s    .nofd
  49.  
  50.     Asl.w    #2,d0
  51.     Bge.s    .colok
  52.     Moveq    #0,d0
  53. .colok    Move.w    d0,TNL_fvl
  54.     _FadePalette24    TNL_black, TNL_pal, PAL_temp, 256, TNL_fvl
  55.     _LoadPalette24    PAL_temp, TNL_CLp, 8
  56. .nofd
  57.  
  58.     ;-- DO THE EFFECT --
  59.     Lea    TNL_txr,a0        ; The Texture
  60.     Lea    TNL_tab,a1        ; Lookup Table
  61.     Lea    TNL_cbf,a2        ; ChunkyBuffer
  62.     Lea    SINE,a3            ; Sine Table (1024 entries) = 1024*Sin(Ang)
  63.     Lea    SINE+256,a4        ; Cosine Table
  64.  
  65.     ;-- TUNNEL MOVEMENT --
  66.     Move.w    TNL_xps,d0        ; Move thru tunnel
  67.     Subq    #3,d0
  68.     And.w    #$007F,d0
  69.     Move.w    d0,TNL_xps
  70.     Lsl.w    #7,d0            ; *128 (texture width)
  71.     Lea    0(a0,d0.w),a0
  72.  
  73.     Move.w    TNL_yan,d1        ; Tunnel Rotation
  74.     Addq    #8,d1
  75.     And.w    #$03FF,d1
  76.     Move.w    d1,TNL_yan
  77.  
  78.     Move.w    0(a3,d1.w*2),d1
  79.     Lsr.w    #3,d1
  80.     And.w    #$007F,d1
  81.     Lea    0(a0,d1.w),a0
  82.  
  83.     ;-- PERFORM TRANSFORMATION --
  84.     Move.w    #160*128-1,d0
  85. .ll    Move.w    (a1)+,d1        ; Offset
  86.     Move.b    0(a0,d1.w),(a2)+    ; Read -> Write
  87.     Dbra    d0,    .ll
  88.  
  89.  
  90.     ;-- DO C2P --
  91.     Lea    TNL_cbf,a0
  92.     Lea    TNL_pln,a1
  93.     Lea    CHUNKY,a2
  94.     Move.l    #160*TNL_Y/8-1,d0
  95.     Jsr    c2p16
  96.  
  97.     ;-- DONE! --
  98.     
  99.     Tst.w    EXIT
  100.     Bne.s    .tnl_xit        ; User Abort
  101.     Cmp.w    #TNL_TIME,INT_Timer1    ; Time to finish??
  102.     Blt.s    .tnl_lp            ; Just loop it
  103.  
  104.  
  105. .tnl_xit
  106.  
  107.     ;-- QUIT --
  108.  
  109.     Move.w    #$0180,DMACON(a5)
  110.     _WaitVBL
  111.  
  112.     Rts
  113.  
  114.  
  115.  
  116. ; +-------+
  117. ; | DATAS |    
  118. ; +-------+-------------------------------------------+
  119.  
  120. TNL_xps    Dc.w    0
  121. TNL_yan    Dc.w    0
  122. TNL_fvl    Dc.w    0
  123.  
  124. TNL_pal        incbin    'TLA/Tunnel/Main3.PAL'
  125. TNL_white    Dcb.l    256,$FFFFFF
  126. TNL_black    Dcb.l    256,$000000
  127. TNL_tmp    Dcb.l    256,$000000
  128.  
  129. TNL_txr    incbin    'tla/tunnel/Texture6.CNK'
  130.     incbin    'tla/tunnel/Texture6.CNK'
  131. TNL_bkg    incbin    'TLA/Tunnel/SHADE_BG.STC'
  132.  
  133. TNL_tab    incbin    'tla/tunnel/TunnelMap.RAW'
  134.  
  135.     section    'PlanarDisplay',BSS_C
  136. TNL_pln    Ds.b    40*128*8            ; Planar Display (320x128x8)
  137.  
  138.     section    'MoreData',BSS
  139. TNL_cbf    Ds.b    160*128                ; ChunkyBuffer
  140.  
  141.  
  142.  
  143.     ; +-------------------------------------------+
  144.  
  145.     section    'C2P_Test Clist',DATA_C
  146. TNL_CL    Dc.w    BPL0PTH,0,BPL0PTL,0,BPL1PTH,0,BPL1PTL,0
  147.     Dc.w    BPL2PTH,0,BPL2PTL,0,BPL3PTH,0,BPL3PTL,0
  148.     Dc.w    BPL4PTH,0,BPL4PTL,0,BPL5PTH,0,BPL5PTL,0
  149.     Dc.w    BPL6PTH,0,BPL6PTL,0,BPL7PTH,0,BPL7PTL,0
  150.  
  151.     Dc.w    DDFSTRT,$38,DDFSTOP,$D0,DIWSTRT,$2C81,DIWSTOP,$2CC1
  152.     Dc.w    BPL1MOD,-48,BPL2MOD,-8
  153.  
  154.     Dc.w    BPLCON0,$0210,BPLCON1,0,BPLCON2,0
  155.     Dc.w    FMODE,$4003            ; ScanDouble + FastLargeGrab
  156.  
  157. TNL_CLp    ColBank    8                ; 256 Colours
  158.  
  159.     Dc.w    $FFFF,$FFFE
  160.  
  161.